﻿using System.Collections.ObjectModel;
using System.ComponentModel;


namespace ScrumFactory.Composition.ViewModel {

    public enum ProjectStatusFilter : short {
        ALL_PROJECTS,
        RUNNING_PROJECTS
    }

    /// <summary>
    /// Projects List View Model interface.
    /// </summary>
    public interface IProjectsListViewModel {       

        /// <summary>
        /// Gets or sets the view.
        /// </summary>
        /// <value>The view.</value>
        //IProjectsListView View { get; set; }

        /// <summary>
        /// Gets the filtered projects.
        /// </summary>        
        /// <value>The filtered projects.</value>
        ICollectionView FilteredProjects { get; }

        /// <summary>
        /// Gets or sets the status filter.
        /// </summary>
        /// <value>The status filter.</value>
        ProjectStatusFilter StatusFilter { get; set;  }

        /// <summary>
        /// Gets or sets the search filter text.
        /// </summary>
        /// <value>The search filter text.</value>
        string SearchFilterText { get; set; }

        /// <summary>
        /// Gets the projects.
        /// </summary>
        /// <value>The projects.</value>
        ObservableCollection<Project> Projects { get; }

        /// <summary>
        /// Gets the selected project.
        /// </summary>
        /// <value>The selected project.</value>
        Project SelectedProject { get; }

        /// <summary>
        /// Gets the refresh project list command.
        /// </summary>
        /// <value>The refresh project list command.</value>
        System.Windows.Input.ICommand RefreshProjectListCommand { get; }


        /// <summary>
        /// Gets the load once project list command.
        /// This command is executed only once, when the View is showed.
        /// </summary>
        /// <value>The load once project list command.</value>
        System.Windows.Input.ICommand LoadOnceProjectListCommand { get; }

       
    }
}
